<!DOCTYPE html>
<html lang="zh-Hans">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.2.1">
  <link rel="apple-touch-icon" sizes="180x180" href="/blog/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/blog/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/blog/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/blog/images/logo.svg" color="#222">

<link rel="stylesheet" href="/blog/css/main.css">


<link rel="stylesheet" href="/blog/lib/font-awesome/css/all.min.css">

<script id="hexo-configurations">
    var NexT = window.NexT || {};
    var CONFIG = {"hostname":"gujinyu102.gitee.io","root":"/blog/","scheme":"Muse","version":"7.8.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
  </script>

  <meta name="description" content="一、配置参数 二、各种事件说明 三、Plupload实例的属性 四、Plupload实例的方法 五、文件对象的属性和方法 六、QueueProgress 对象的属性 七、plupload命名空间上的一些属性 一、配置参数 实例化一个plupload对象时，也就是 new plupload.Uploader()，需要传入一个对象作为配置参数。后面内容中出现的plupload实例均是指new plup">
<meta property="og:type" content="article">
<meta property="og:title" content="Plupload使用文档">
<meta property="og:url" content="https://gujinyu102.gitee.io/blog/2016/12/08/plupload-e4-bd-bf-e7-94-a8-e6-96-87-e6-a1-a3/index.html">
<meta property="og:site_name" content="辜锦宇的博客">
<meta property="og:description" content="一、配置参数 二、各种事件说明 三、Plupload实例的属性 四、Plupload实例的方法 五、文件对象的属性和方法 六、QueueProgress 对象的属性 七、plupload命名空间上的一些属性 一、配置参数 实例化一个plupload对象时，也就是 new plupload.Uploader()，需要传入一个对象作为配置参数。后面内容中出现的plupload实例均是指new plup">
<meta property="article:published_time" content="2016-12-08T07:01:00.000Z">
<meta property="article:modified_time" content="2020-06-09T09:04:30.486Z">
<meta property="article:author" content="辜锦宇">
<meta name="twitter:card" content="summary">

<link rel="canonical" href="https://gujinyu102.gitee.io/blog/2016/12/08/plupload-e4-bd-bf-e7-94-a8-e6-96-87-e6-a1-a3/">


<script id="page-configurations">
  // https://hexo.io/docs/variables.html
  CONFIG.page = {
    sidebar: "",
    isHome : false,
    isPost : true,
    lang   : 'zh-Hans'
  };
</script>

  <title>Plupload使用文档 | 辜锦宇的博客</title>
  






  <noscript>
  <style>
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-header { opacity: initial; }

  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage">
  <div class="container use-motion">
    <div class="headband"></div>

    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="Toggle navigation bar">
      <span class="toggle-line toggle-line-first"></span>
      <span class="toggle-line toggle-line-middle"></span>
      <span class="toggle-line toggle-line-last"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/blog/" class="brand" rel="start">
      <span class="logo-line-before"><i></i></span>
      <h1 class="site-title">辜锦宇的博客</h1>
      <span class="logo-line-after"><i></i></span>
    </a>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
    </div>
  </div>
</div>




<nav class="site-nav">
  <ul id="menu" class="main-menu menu">
        <li class="menu-item menu-item-home">

    <a href="/blog/" rel="section"><i class="fa fa-home fa-fw"></i>Home</a>

  </li>
        <li class="menu-item menu-item-archives">

    <a href="/blog/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>Archives</a>

  </li>
  </ul>
</nav>




</div>
    </header>

    
  <div class="back-to-top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>


    <main class="main">
      <div class="main-inner">
        <div class="content-wrap">
          

          <div class="content post posts-expand">
            

    
  
  
  <article itemscope itemtype="http://schema.org/Article" class="post-block" lang="zh-Hans">
    <link itemprop="mainEntityOfPage" href="https://gujinyu102.gitee.io/blog/2016/12/08/plupload-e4-bd-bf-e7-94-a8-e6-96-87-e6-a1-a3/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/blog/images/avatar.gif">
      <meta itemprop="name" content="辜锦宇">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="辜锦宇的博客">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          Plupload使用文档
        </h1>

        <div class="post-meta">
            <span class="post-meta-item">
              <span class="post-meta-item-icon">
                <i class="far fa-calendar"></i>
              </span>
              <span class="post-meta-item-text">Posted on</span>

              <time title="Created: 2016-12-08 15:01:00" itemprop="dateCreated datePublished" datetime="2016-12-08T15:01:00+08:00">2016-12-08</time>
            </span>
              <span class="post-meta-item">
                <span class="post-meta-item-icon">
                  <i class="far fa-calendar-check"></i>
                </span>
                <span class="post-meta-item-text">Edited on</span>
                <time title="Modified: 2020-06-09 17:04:30" itemprop="dateModified" datetime="2020-06-09T17:04:30+08:00">2020-06-09</time>
              </span>

          

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">

      
        <p><a href="http://www.yuxmagic.com/?p=11&preview=true#plupload_doc1" target="_blank" rel="noopener">一、配置参数</a> <a href="http://www.yuxmagic.com/?p=11&preview=true#plupload_doc2" target="_blank" rel="noopener">二、各种事件说明</a> <a href="http://www.yuxmagic.com/?p=11&preview=true#plupload_doc3" target="_blank" rel="noopener">三、Plupload实例的属性</a> <a href="http://www.yuxmagic.com/?p=11&preview=true#plupload_doc4" target="_blank" rel="noopener">四、Plupload实例的方法</a> <a href="http://www.yuxmagic.com/?p=11&preview=true#plupload_doc5" target="_blank" rel="noopener">五、文件对象的属性和方法</a> <a href="http://www.yuxmagic.com/?p=11&preview=true#plupload_doc6" target="_blank" rel="noopener">六、QueueProgress 对象的属性</a> <a href="http://www.yuxmagic.com/?p=11&preview=true#plupload_doc7" target="_blank" rel="noopener">七、plupload命名空间上的一些属性</a></p>
<p><strong>一、配置参数</strong></p>
<p>实例化一个plupload对象时，也就是 <code>new plupload.Uploader()</code>，需要传入一个对象作为配置参数。后面内容中出现的plupload实例均是指<code>new plupload.Uploader()</code>得到的实例对象</p>
<p>属性</p>
<p>类型</p>
<p>默认值</p>
<p>描述</p>
<p>browse_button</p>
<p>String / DOM</p>
<p>触发文件选择对话框的DOM元素，当点击该元素后便后弹出文件选择对话框。该值可以是DOM元素对象本身，也可以是该DOM元素的id</p>
<p>url</p>
<p>String</p>
<p>服务器端接收和处理上传文件的脚本地址，可以是相对路径(相对于当前调用Plupload的文档)，也可以是绝对路径</p>
<p>filters</p>
<p>Object</p>
<p>{ }</p>
<p>可以使用该参数来限制上传文件的类型，大小等，该参数以对象的形式传入，它包括三个属性：<strong>mime_types：</strong>用来限定上传文件的类型，为一个数组，该数组的每个元素又是一个对象，该对象有title和extensions两个属性，title为该过滤器的名称，extensions为文件扩展名，有多个时用逗号隔开。该属性默认为一个空数组，即不做限制。 <strong>max_file_size：</strong>用来限定上传文件的大小，如果文件体积超过了该值，则不能被选取。值可以为一个数字，单位为b,也可以是一个字符串，由数字和单位组成，如’200kb’ <strong>prevent_duplicates：</strong>是否允许选取重复的文件，为true时表示不允许，为false时表示允许，默认为false。如果两个文件的文件名和大小都相同，则会被认为是重复的文件 filters完整的配置示例如下(当然也可以只配置其中的某一项)：</p>
<p>filters: {<br>  mime_types : [ //只允许上传图片和zip文件<br>    { title : “Image files”, extensions : “jpg,gif,png” },<br>    { title : “Zip files”, extensions : “zip” }<br>  ],<br>  max_file_size : ‘400kb’, //最大只能上传400kb的文件<br>  prevent_duplicates : true //不允许选取重复文件<br>}</p>
<p>headers</p>
<p>Object</p>
<p>设置上传时的自定义头信息，以键/值对的形式传入，键代表头信息属性名，键代表属性值。html4上传方式不支持设置该属性。</p>
<p>multipart</p>
<p>Boolean</p>
<p>true</p>
<p>为<code>true</code>时将以<code>multipart/form-data</code>的形式来上传文件，为false时则以二进制的格式来上传文件。html4上传方式不支持以二进制格式来上传文件，在flash上传方式中，二进制上传也有点问题。并且二进制格式上传还需要在服务器端做特殊的处理。一般我们用multipart/form-data的形式来上传文件就足够了。</p>
<p>multipart_params</p>
<p>Object</p>
<p>上传时的附加参数，以键/值对的形式传入，服务器端可是使用$_POST来获取这些参数(以php为例)。比如：</p>
<p>multipart_params: {<br>  one: ‘1’,<br>  two: ‘2’,<br>  three: { //值还可以是一个字面量对象<br>    a: ‘4’,<br>    b: ‘5’<br>  },<br>  four: [‘6’, ‘7’, ‘8’]  //也可以是一个数组<br>}</p>
<p>max_retries</p>
<p>Number</p>
<p>0</p>
<p>当发生<code>plupload.HTTP_ERROR</code>错误时的重试次数，为0时表示不重试</p>
<p>chunk_size</p>
<p>Number/String</p>
<p>0</p>
<p>分片上传文件时，每片文件被切割成的大小，为数字时单位为字节。也可以使用一个带单位的字符串，如<code>&quot;200kb&quot;</code>。当该值为0时表示不使用分片上传功能</p>
<p>resize</p>
<p>Object</p>
<p>可以使用该参数对将要上传的图片进行压缩，该参数是一个对象，里面包括5个属性：<strong>width：</strong>指定压缩后图片的宽度，如果没有设置该属性则默认为原始图片的宽度 <strong>height：</strong>指定压缩后图片的高度，如果没有设置该属性则默认为原始图片的高度 <strong>crop：</strong> <strong>quality：</strong>压缩后图片的质量，只对jpg格式的图片有效，默认为90。<code>quality</code>可以跟<code>width</code>和<code>height</code>一起使用，但也可以单独使用，单独使用时，压缩后图片的宽高不会变化，但由于质量降低了，所以体积也会变小 <strong>preserve_headers：</strong>压缩后是否保留图片的元数据，<code>true</code>为保留，<code>false</code>为不保留,默认为<code>true</code>。删除图片的元数据能使图片的体积减小一点点 resize参数的配置示例如下：</p>
<p>resize: {<br>  width: 100,<br>  height: 100,<br>  crop: true,<br>  quality: 60,<br>  preserve_headers: false<br>}</p>
<p>drop_element</p>
<p>DOM/String/Array</p>
<p>指定了使用拖拽方式来选择上传文件时的拖拽区域，即可以把文件拖拽到这个区域的方式来选择文件。该参数的值可以为一个DOM元素的id,也可是DOM元素本身，还可以是一个包括多个DOM元素的数组。如果不设置该参数则拖拽上传功能不可用。目前只有html5上传方式才支持拖拽上传。</p>
<p>multi_selection</p>
<p>Boolean</p>
<p>true</p>
<p>是否可以在文件浏览对话框中选择多个文件，true为可以，false为不可以。默认true，即可以选择多个文件。需要注意的是，在某些不支持多选文件的环境中，默认值是false。比如在ios7的safari浏览器中，由于存在bug，造成不能多选文件。当然，在html4上传方式中，也是无法多选文件的。</p>
<p>required_features</p>
<p>Mix</p>
<p>可以使用该参数来设置你必须需要的一些功能特征，Plupload会根据你的设置来选择合适的上传方式。因为，不同的上传方式，支持的功能是不同的，比如拖拽上传只有html5上传方式支持，图片压缩则只有html5,flash,silverlight上传方式支持。该参数的值是一个混合类型，可以是一个以逗号分隔的字符串，</p>
<p>unique_names</p>
<p>Boolean</p>
<p>false</p>
<p>当值为true时会为每个上传的文件生成一个唯一的文件名，并作为额外的参数post到服务器端，参数明为<code>name</code>,值为生成的文件名。</p>
<p>runtimes</p>
<p>String</p>
<p>html5,flash, silverlight, html4</p>
<p>用来指定上传方式，指定多个上传方式请使用逗号隔开。一般情况下，你不需要配置该参数，因为Plupload默认会根据你的其他的参数配置来选择最合适的上传方式。如果没有特殊要求的话，Plupload会首先选择html5上传方式，如果浏览器不支持html5，则会使用flash或silverlight，如果前面两者也都不支持，则会使用最传统的html4上传方式。如果你想指定使用某个上传方式，或改变上传方式的优先顺序，则你可以配置该参数。</p>
<p>file_data_name</p>
<p>String</p>
<p>file</p>
<p>指定文件上传时文件域的名称，默认为<code>file</code>,例如在php中你可以使用<code>$_FILES[&#39;file&#39;]</code>来获取上传的文件信息</p>
<p>container</p>
<p>DOM/String</p>
<p>用来指定Plupload所创建的html结构的父容器，默认为前面指定的<code>browse_button</code>的父元素。该参数的值可以是一个元素的id,也可以是DOM元素本身。</p>
<p>flash_swf_url</p>
<p>String</p>
<p>js/Moxie.swf</p>
<p>flash上传组件的url地址，如果是相对路径，则相对的是调用Plupload的html文档。当使用flash上传方式会用到该参数。</p>
<p>silverlight_xap_url</p>
<p>String</p>
<p>js/Moxie.xap</p>
<p>silverlight上传组件的url地址，如果是相对路径，则相对的是调用Plupload的html文档。当使用silverlight上传方式会用到该参数。</p>
<p><strong>二、各种事件说明</strong></p>
<p>要了解plupload的运行状况，靠的就是在这些事件了</p>
<p>Init</p>
<p>当Plupload初始化完成后触发监听函数参数：<strong>(uploader)</strong> <code>uploader</code>为当前的plupload实例对象</p>
<p>PostInit</p>
<p>当Init事件发生后触发监听函数参数：<strong>(uploader)</strong> <code>uploader</code>为当前的plupload实例对象</p>
<p>OptionChanged</p>
<p>当使用Plupload实例的setOption()方法改变当前配置参数后触发监听函数参数：<strong>(uploader,option_name,new_value,old_value)</strong> <code>uploader</code>为当前的plupload实例对象，<code>option_name</code>为发生改变的参数名称，<code>new_value</code>为改变后的值，<code>old_value</code>为改变前的值</p>
<p>Refresh</p>
<p>当调用plupload实例的refresh()方法后会触发该事件，暂时不清楚还有什么其他动作会触发该事件，但据我测试，把文件添加到上传队列后也会触发该事件。监听函数参数：<strong>(uploader)</strong> <code>uploader</code>为当前的plupload实例对象</p>
<p>StateChanged</p>
<p>当上传队列的状态发生改变时触发监听函数参数：<strong>(uploader)</strong> <code>uploader</code>为当前的plupload实例对象</p>
<p>UploadFile</p>
<p>当上传队列中某一个文件开始上传后触发监听函数参数：<strong>(uploader,file)</strong> <code>uploader</code>为当前的plupload实例对象，<code>file</code>为触发此事件的文件对象</p>
<p>BeforeUpload</p>
<p>当队列中的某一个文件正要开始上传前触发监听函数参数：<strong>(uploader,file)</strong> <code>uploader</code>为当前的plupload实例对象，<code>file</code>为触发此事件的文件对象</p>
<p>QueueChanged</p>
<p>当上传队列发生变化后触发，即上传队列新增了文件或移除了文件。QueueChanged事件会比FilesAdded或FilesRemoved事件先触发监听函数参数：<strong>(uploader)</strong> <code>uploader</code>为当前的plupload实例对象</p>
<p>UploadProgress</p>
<p>会在文件上传过程中不断触发，可以用此事件来显示上传进度监听函数参数：<strong>(uploader,file)</strong> <code>uploader</code>为当前的plupload实例对象，<code>file</code>为触发此事件的文件对象</p>
<p>FilesRemoved</p>
<p>当文件从上传队列移除后触发监听函数参数：<strong>(uploader,files)</strong> <code>uploader</code>为当前的plupload实例对象，<code>files</code>为一个数组，里面的元素为本次事件所移除的文件对象</p>
<p>FileFiltered</p>
<p>暂不清楚该事件的意义，但根据测试得出，该事件会在每一个文件被添加到上传队列前触发监听函数参数：<strong>(uploader,file)</strong> <code>uploader</code>为当前的plupload实例对象，<code>file</code>为触发此事件的文件对象</p>
<p>FilesAdded</p>
<p>当文件添加到上传队列后触发监听函数参数：<strong>(uploader,files)</strong> <code>uploader</code>为当前的plupload实例对象，<code>files</code>为一个数组，里面的元素为本次添加到上传队列里的文件对象</p>
<p>FileUploaded</p>
<p>当队列中的某一个文件上传完成后触发监听函数参数：<strong>(uploader,file,responseObject)</strong> <code>uploader</code>为当前的plupload实例对象，<code>file</code>为触发此事件的文件对象，<code>responseObject</code>为服务器返回的信息对象，它有以下3个属性： <strong>response：</strong>服务器返回的文本 <strong>responseHeaders：</strong>服务器返回的头信息 <strong>status：</strong>服务器返回的http状态码，比如200</p>
<p>ChunkUploaded</p>
<p>当使用文件小片上传功能时，每一个小片上传完成后触发监听函数参数：<strong>(uploader,file,responseObject)</strong> <code>uploader</code>为当前的plupload实例对象，<code>file</code>为触发此事件的文件对象，<code>responseObject</code>为服务器返回的信息对象，它有以下5个属性： <strong>offset：</strong>该文件小片在整体文件中的偏移量 <strong>response：</strong>服务器返回的文本 <strong>responseHeaders：</strong>服务器返回的头信息 <strong>status：</strong>服务器返回的http状态码，比如200 <strong>total：</strong>该文件(指的是被切割成了许多文件小片的那个文件)的总大小，单位为字节</p>
<p>UploadComplete</p>
<p>当上传队列中所有文件都上传完成后触发监听函数参数：<strong>(uploader,files)</strong> <code>uploader</code>为当前的plupload实例对象，<code>files</code>为一个数组，里面的元素为本次已完成上传的所有文件对象</p>
<p>Error</p>
<p>当发生触发时触发监听函数参数：<strong>(uploader,errObject)</strong> <code>uploader</code>为当前的plupload实例对象，<code>errObject</code>为错误对象，它至少包含以下3个属性(因为不同类型的错误，属性可能会不同)： <strong>code：</strong>错误代码，具体请参考plupload上定义的表示错误代码的常量属性 <strong>file：</strong>与该错误相关的文件对象 <strong>message：</strong>错误信息</p>
<p>Destroy</p>
<p>当调用destroy方法时触发监听函数参数：<strong>(uploader)</strong></p>
<p><code>uploader</code>为当前的plupload实例对象</p>
<p><strong>三、Plupload实例的属性</strong></p>
<p>属性</p>
<p>描述</p>
<p>id</p>
<p>Plupload实例的唯一标识id</p>
<p>state</p>
<p>当前的上传状态，可能的值为<code>plupload.STARTED</code>或<code>plupload.STOPPED</code>，该值由Plupload实例的<code>stop()</code>或<code>statr()</code>方法控制。默认为<code>plupload.STOPPED</code></p>
<p>runtime</p>
<p>当前使用的上传方式</p>
<p>files</p>
<p>当前的上传队列，是一个由上传队列中的文件对象组成的数组</p>
<p>settings</p>
<p>当前的配置参数对象</p>
<p>total</p>
<p>表示总体进度信息的QueueProgress对象</p>
<p><strong>四、Plupload实例的方法</strong></p>
<p>方法</p>
<p>描述</p>
<p>init()</p>
<p>初始化Plupload实例</p>
<p>setOption(option, [value])</p>
<p>设置某个特定的配置参数,option为参数名称，value为要设置的参数值。option也可以为一个由参数名和参数值键/值对组成的对象，这样就可以一次设定多个参数，此时该方法的第二个参数value会被忽略。</p>
<p>getOption([option])</p>
<p>获取当前的配置参数，参数option为需要获取的配置参数名称，如果没有指定option，则会获取所有的配置参数</p>
<p>refresh()</p>
<p>刷新当前的plupload实例，暂时还不明白什么时候需要使用</p>
<p>start()</p>
<p>开始上传队列中的文件</p>
<p>stop()</p>
<p>停止队列中的文件上传</p>
<p>disableBrowse(disable)</p>
<p>禁用或启用plupload的文件浏览按钮,参数<code>disable</code>为<code>true</code>时为禁用，为<code>false</code>时为启用。默认为<code>true</code></p>
<p>getFile(id)</p>
<p>通过id来获取文件对象</p>
<p>addFile(file, [fileName])</p>
<p>向上传队列中添加文件，如果成功添加了文件，会触发<code>FilesAdded</code>事件。参数file为要添加的文件,可以是一个原生的文件,或者一个plupload文件对象,或者一个<code>input[type=&quot;file&quot;]</code>元素,还可以是一个包括前面那几种东西的数组；fileName为给该文件指定的名称</p>
<p>removeFile(file)</p>
<p>从上传队列中移除文件，参数<code>file</code>为plupload文件对象或先前指定的文件名称</p>
<p>splice(start, length)</p>
<p>从上传队列中移除一部分文件，<code>start</code>为开始移除文件在队列中的索引，<code>length</code>为要移除的文件的数量，该方法的返回值为被移除的文件。该方法会触发<code>FilesRemoved</code> 和<code>QueueChanged</code>事件</p>
<p>trigger(name, Multiple)</p>
<p>触发某个事件。<code>name</code>为要触发的事件名称，<code>Multiple</code>为传给该事件监听函数的参数，是一个对象</p>
<p>hasEventListener(name)</p>
<p>用来判断某个事件是否有监听函数，<code>name</code>为事件名称</p>
<p>bind(name, func, scope)</p>
<p>给某个事件绑定监听函数，<code>name</code>为事件名，<code>func</code>为监听函数，<code>scope</code>为监听函数的作用域，也就是监听函数中this的指向</p>
<p>unbind(name, func)</p>
<p>移除事件的监听函数，<code>name</code>为事件名称，<code>func</code>为要移除的监听函数</p>
<p>unbindAll()</p>
<p>移除所有事件的所有监听函数</p>
<p>destroy()</p>
<p>销毁plupload实例</p>
<p><strong>五、文件对象的属性和方法</strong></p>
<p>在很多事件监听函数中，都会提供文件对象给你</p>
<p>属性/方法</p>
<p>描述</p>
<p>id</p>
<p>文件id</p>
<p>name</p>
<p>文件名，例如”myfile.gif”</p>
<p>type</p>
<p>文件类型，例如”image/jpeg”</p>
<p>size</p>
<p>文件大小，单位为字节，当启用了客户端压缩功能后，该值可能会改变</p>
<p>origSize</p>
<p>文件的原始大小，单位为字节</p>
<p>loaded</p>
<p>文件已上传部分的大小，单位为字节</p>
<p>percent</p>
<p>文件已上传部分所占的百分比，如50就代表已上传了50%</p>
<p>status</p>
<p>文件的状态，可能为以下几个值之一：<code>plupload.QUEUED</code>, <code>plupload.UPLOADING</code>, <code>plupload.FAILED</code>, <code>plupload.DONE</code></p>
<p>lastModifiedDate</p>
<p>文件最后修改的时间</p>
<p>getNative()</p>
<p>获取原生的文件对象</p>
<p>getSource()</p>
<p>获取mOxie.File 对象，想了解mOxie是什么东西，可以看下<a href="https://github.com/moxiecode/moxie/wiki/API" target="_blank" rel="noopener">https://github.com/moxiecode/moxie/wiki/API</a></p>
<p>destroy()</p>
<p>销毁文件对象</p>
<p><strong>六、QueueProgress 对象的属性</strong></p>
<p>plupload实例的total属性是一个QueueProgress对象</p>
<p>属性</p>
<p>描述</p>
<p>size</p>
<p>上传队列中所有文件加起来的总大小，单位为字节</p>
<p>loaded</p>
<p>队列中当前已上传文件加起来的总大小,单位为字节</p>
<p>uploaded</p>
<p>已完成上传的文件的数量</p>
<p>failed</p>
<p>上传失败的文件数量</p>
<p>queued</p>
<p>队列中剩下的(也就是除开已经完成上传的文件)需要上传的文件数量</p>
<p>percent</p>
<p>整个队列的已上传百分比，如50就代表50%</p>
<p>bytesPerSec</p>
<p>上传速率，单位为 byte/s，也就是 字节/秒</p>
<p><strong>七、plupload命名空间上的一些属性</strong></p>
<p>plupload的命名空间上有一些属性，用来表示一些常量。记住，不是plupload实例的属性，而是plupload的属性</p>
<p>属性名称</p>
<p>描述</p>
<p>VERSION</p>
<p>当前plupload的版本号</p>
<p>STOPPED</p>
<p>值为1，代表上传队列还未开始上传或者上传队列中的文件已经上传完毕时plupload实例的<code>state</code>属性值</p>
<p>STARTED</p>
<p>值为2，代表队列中的文件正在上传时plupload实例的<code>state</code>属性值</p>
<p>QUEUED</p>
<p>值为1，代表某个文件已经被添加进队列等待上传时该文件对象的<code>status</code>属性值</p>
<p>UPLOADING</p>
<p>值为2，代表某个文件正在上传时该文件对象的<code>status</code>属性值</p>
<p>FAILED</p>
<p>值为4，代表某个文件上传失败后该文件对象的<code>status</code>属性值</p>
<p>DONE</p>
<p>值为5，代表某个文件上传成功后该文件对象的<code>status</code>属性值</p>
<p>GENERIC_ERROR</p>
<p>值为-100，发生通用错误时的错误代码</p>
<p>HTTP_ERROR</p>
<p>值为-200，发生http网络错误时的错误代码，例如服务气端返回的状态码不是200</p>
<p>IO_ERROR</p>
<p>值为-300，发生磁盘读写错误时的错误代码，例如本地上某个文件不可读</p>
<p>SECURITY_ERROR</p>
<p>值为-400，发生因为安全问题而产生的错误时的错误代码</p>
<p>INIT_ERROR</p>
<p>值为-500，初始化时发生错误的错误代码</p>
<p>FILE_SIZE_ERROR</p>
<p>值为-600，当选择的文件太大时的错误代码</p>
<p>FILE_EXTENSION_ERROR</p>
<p>值为-601，当选择的文件类型不符合要求时的错误代码</p>
<p>FILE_DUPLICATE_ERROR</p>
<p>值为-602，当选取了重复的文件而配置中又不允许有重复文件时的错误代码</p>
<p>IMAGE_FORMAT_ERROR</p>
<p>值为-700，发生图片格式错误时的错误代码</p>
<p>IMAGE_MEMORY_ERROR</p>
<p>当发生内存错误时的错误代码</p>
<p>IMAGE_DIMENSIONS_ERROR</p>
<p>值为-702，当文件大小超过了plupload所能处理的最大值时的错误代码</p>

    </div>

    
    
    

      <footer class="post-footer">

        


        
    <div class="post-nav">
      <div class="post-nav-item"></div>
      <div class="post-nav-item">
    <a href="/blog/2016/12/08/requirejs-e5-8e-8b-e7-bc-a9-e5-b7-a5-e5-85-b7r-js-e7-9a-84build-js-e9-85-8d-e7-bd-ae-e8-af-a6-e8-a7-a3/" rel="next" title="requirejs压缩工具r.js的build.js配置详解">
      requirejs压缩工具r.js的build.js配置详解 <i class="fa fa-chevron-right"></i>
    </a></div>
    </div>
      </footer>
    
  </article>
  
  
  



          </div>
          

<script>
  window.addEventListener('tabs:register', () => {
    let { activeClass } = CONFIG.comments;
    if (CONFIG.comments.storage) {
      activeClass = localStorage.getItem('comments_active') || activeClass;
    }
    if (activeClass) {
      let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
      if (activeTab) {
        activeTab.click();
      }
    }
  });
  if (CONFIG.comments.storage) {
    window.addEventListener('tabs:click', event => {
      if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
      let commentClass = event.target.classList[1];
      localStorage.setItem('comments_active', commentClass);
    });
  }
</script>

        </div>
          
  
  <div class="toggle sidebar-toggle">
    <span class="toggle-line toggle-line-first"></span>
    <span class="toggle-line toggle-line-middle"></span>
    <span class="toggle-line toggle-line-last"></span>
  </div>

  <aside class="sidebar">
    <div class="sidebar-inner">

      <ul class="sidebar-nav motion-element">
        <li class="sidebar-nav-toc">
          Table of Contents
        </li>
        <li class="sidebar-nav-overview">
          Overview
        </li>
      </ul>

      <!--noindex-->
      <div class="post-toc-wrap sidebar-panel">
      </div>
      <!--/noindex-->

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">辜锦宇</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap motion-element">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
          <a href="/blog/archives/">
        
          <span class="site-state-item-count">5</span>
          <span class="site-state-item-name">posts</span>
        </a>
      </div>
  </nav>
</div>



      </div>

    </div>
  </aside>
  <div id="sidebar-dimmer"></div>


      </div>
    </main>

    <footer class="footer">
      <div class="footer-inner">
        

        

<div class="copyright">
  
  &copy; 
  <span itemprop="copyrightYear">2020</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">辜锦宇</span>
</div>
  <div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> & <a href="https://muse.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Muse</a>
  </div>

        








      </div>
    </footer>
  </div>

  
  <script src="/blog/lib/anime.min.js"></script>
  <script src="/blog/lib/velocity/velocity.min.js"></script>
  <script src="/blog/lib/velocity/velocity.ui.min.js"></script>

<script src="/blog/js/utils.js"></script>

<script src="/blog/js/motion.js"></script>


<script src="/blog/js/schemes/muse.js"></script>


<script src="/blog/js/next-boot.js"></script>




  















  

  

</body>
</html>
